[BX]、loop、inc、dec指令

您所在的位置:网站首页 汇编语言 clc [BX]、loop、inc、dec指令

[BX]、loop、inc、dec指令

2023-12-28 22:13| 来源: 网络整理| 查看: 265

1、[BX]

[BX]表示一个内存单元,它的偏移地址在bx中。

mov ax,[bx]

功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中。

2、符号(约定方便阅读和理解)

描述性符号“()”

表示一个寄存器或一个内存单元中的内容。

例:ax中内容为0010H

(ax)=0010H

对于mov ax,[2]

(ax)=((ds)*16+2)

对于mov [2],ax

((ds)*16+2)=(ax)

符号idata

表示常量。

3、inc(+1),dec(-1)

inc  bx

把bx中的值加1

dec bx

把bx中的值减1

4、loop指令(含义“循环”)

格式:loop 标号

CPU执行loop指令时,要进行两个操作

cx=cx-1判断cx中的值,不为零则转至标号处执行程序,为零则向下执行

通常用loop指令来实现循环,cx中存放循环次数。

实现循环功能的框架 mov cx,循环次数 s: 循环执行的程序段 loop s

例:编程计算2^12

code cs:code code segment start: mov ax,2 mov cx,11 s:add ax,ax loop s mov ax,4c00h int 21h code ends end start

在源汇编程序中,数据不能以字母开头,所以前面要加0。

例:将ffff:0~ffff:b中的八位数据,累加到16位寄存器中

需要解决的问题:类型的匹配以及结果的不超界。

方法:

用一个16位寄存器作为中介

将内存单元中的八位数据赋值到1个16位寄存器ax中,再将ax中的数据加到dx上,从而使两个运算对象的类型匹配且不超界。

如:

mov al,ds:[0] mov ah,0 add dx,ax

例:

assume cs:code code segment mov ax,0ffffh mov ds,ax mov bx,0 mov dx,0 mov cx,12 s: mov al,[bx] mov ah,0 add dx,ax inc bx loop s mov ax,4c00h int 21h code ends end

5、段前缀

“ds:”、“cs:”在汇编语言中称为段前缀

例:mov ax,cs:[0]

6、一段安全空间

在内存中写入数据要考虑这片空间是否安全(即是否为空)

一般程序和操作系统不会使用0:200~0::2FF。

例:拷贝

assume cs:code code segment mov ax,2000 mov ds,ax mov ax,0 mov es,ax mov bx,0 mov cx,16 s: mov ax,ds:[bx] mov es:[bx],ax inc bx loop s code ends end

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3